package com.example.demo.util;

import com.example.demo.domain.vo.child.EnvParameterValueVO;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.util.HashMap;
import java.util.Map;

public class BeanInfoUtil {
    public static void main(String[] args) {
        Map<String, String> bean = BeanInfoUtil.getBenPropertyDescriptor(EnvParameterValueVO.class);
        bean.forEach((k, v) -> {
            System.out.println(k + " : " + v);
        });

    }

    public static Map<String, String> getBenPropertyDescriptor(Class<?> cla) {
        Map<String, String> map = null;
        try {
            BeanInfo beanInfo = Introspector.getBeanInfo(cla);
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
            if (propertyDescriptors != null && propertyDescriptors.length > 0) {
                map = new HashMap<>();
                for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
                    String name = propertyDescriptor.getName();
                    String typeName = propertyDescriptor.getPropertyType().getTypeName();
                    map.put(name, typeName);
                }
                map.remove("class");
                map.remove("name");
                map.remove("description");
            }
        } catch (IntrospectionException e) {
            e.printStackTrace();
        }

        return map;
    }

}
